package model

// db入口文件
// 用来配置一些数据库的简介参数的
import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"github.com/jinzhu/gorm"
	"goblog/utils"
	"time"
)

var db *gorm.DB
var err error //声明一个error类型便于接收错误

//连接数据库设置连接池等

func InitDb() { //连接配置sql
	db, err = gorm.Open(utils.Db, fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local",
		utils.DbUser,
		utils.DbPassWord,
		utils.DbHost,
		utils.DbPort,
		utils.DbName,
	)) //连接数据库前面是类型后面是Sprintf的格式化输出地址
	if err != nil {
		fmt.Println("failed to connect database", err)
	}

	db.SingularTable(true) // 如果设置为true，则使用复数表名。例如，如果为true，则Article会映射到 "articles"表，而不是 "articles"。

	db.AutoMigrate(&User{}, &Article{}, &Category{}) //自动迁移

	// SetMaxIdleConns 用于设置连接池中空闲连接的最大数量。
	db.DB().SetMaxIdleConns(10)

	// SetMaxOpenConns 设置打开数据库连接的最大数量。
	db.DB().SetMaxOpenConns(100)

	// SetConnMaxLifetime 设置了连接可复用的最大时间。
	db.DB().SetConnMaxLifetime(10 * time.Second) // 10 seconds
	//数据库连接时间不应超过router中设置的	r.Run(utils.HttpPort)
	//db.Close() //关闭连接
}
